package cn.daomeng.firebird.core.common.annotation;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import cn.daomeng.firebird.core.utils.StringUtils;
import cn.hutool.json.JSONUtil;

/**
 * @Description: 公共常量类
 * @author gaoqing.li
 * @date 2019/4/11
 **/
public class IsJsonValiadator implements ConstraintValidator<IsJson, String> {

    /**注意的是:ConstraintValidator<IsMobile, String>
     * 第一个参数就是自定义注解的名字 第二个就是注解修饰的字段类型
     */

    //申明一个required 默认的值为false
    public boolean required = false;

    @Override
    public void initialize(IsJson constraintAnnotation) {

        //初始化:拿到IsMobile中的required中的值
        required = constraintAnnotation.requried();

    }
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        //判断value是否必须 required为true则为必须 反之不是必须的
        if(required){
            //必须的
            return JSONUtil.isJson(value);
        }else{
            //判断值是否为空
            if(StringUtils.isEmpty(value)){
                //为空的时候返回true
                return true;
            }
            //否则进行格式校验
            return JSONUtil.isJson(value);

        }

    }

}
